package com.tutu.annotation.controller;

import com.tutu.annotation.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;

/**
 * @Program: Spring_New
 * @Description:
 * @Author: JK.TuTu
 * @Create: 2022-09-14 20:29
 **/
//@Controller 通常作用在控制层（如 Struts2 的 Action），用于将控制层的类标识为 Spring 中的 Bean，其功能与 @Component 相同
@Controller("UserController")  //如果不指定名称 所有bean的id默认为类名称的首字母小写 其余不变
public class UserController {
    /**
     * Autowired 由于Autowired默认按照类型进行注入, 当注入的bean有两个实现类时, 此时就会注入失败
     * 解决方案:搭配@Qualifier(value="bean的id值")实现按照byName进行指定注入
     */
    @Autowired
    @Qualifier(value = "userServiceImpl001")
    private UserService userService;

    /**
     * Resource 默认按照byName查找, 若找不到按照byType查找
     * 当name属性指定名称后 则只会按照byName查找 若找不到直接报错
     */

    /*@Resource(name = "myUserService")
    private UserService myUserService;*/
    public void test() {
        userService.test();
        //myUserService.test();
        System.out.println("UserController执行test方法");
    }
}
